fc074e46f3f9e7ff0f69534c112de8777b793c2f,java/org/apache/catalina/webresources/JarResourceSet.java,JarResourceSet,getResource,#String#,77
Before Change
public WebResource getResource(String path) {
checkPath(path);
String webAppMount = getWebAppMount();
WebResourceRoot root = getRoot();
/*
* Implementation notes
*
* The path parameter passed into this method always starts with '/'.
*
* The path parameter passed into this method may or may not end with a
* '/'. JarFile.getEntry() will return a matching directory entry
* whether or not the name ends in a '/'. However, if the entry is
* requested without the '/' subsequent calls to JarEntry.isDirectory()
* will return false.
*
* Paths in JARs never start with '/'. Leading '/' need to be removed
* before any JarFile.getEntry() call.
*/
// If the JAR has been mounted below the web application root, return
// an empty resource for requests outside of the mount point.
if (path.startsWith(webAppMount)) {
String pathInJar = getInternalPath() + path.substring(
webAppMount.length(), path.length());
// Always strip off the leading '/' to get the JAR path
if (pathInJar.charAt(0) == '/') {
pathInJar = pathInJar.substring(1);
}
if (pathInJar.equals("")) {
// Special case
return new JarResourceRoot(root, new File(getBase()),
pathInJar, path);
} else {
JarEntry jarEntry = null;
if (!(pathInJar.charAt(pathInJar.length() - 1) == '/')) {
After Change
@Override
protected WebResource createArchiveResource(JarEntry jarEntry,
String webAppPath) {
return new JarResource(getRoot(), getBase(), baseUrl, jarEntry,
getInternalPath(), webAppPath);
}